import pandas as pd
dataxls =pd.read_excel(r"D:\大三上学期实验\python数据分析实验\train_query_output.xlsx")

# 删除含有缺失值的行
dataxls = dataxls.dropna(axis=0)

# 相关的库
import re
import nltk

from nltk.corpus import stopwords
# stop_words = stopwords.words('english')
from nltk.stem import PorterStemmer
st=PorterStemmer()
from textblob import TextBlob
from textblob import Word

# 定义一个函数来处理每个单元格中的乱码
def clean_text(cell):
    try:
        return cell.encode('utf-8', errors='ignore').decode('utf-8')
    except:
        return ""

# 数据清洗函数
def data_clean(x):
    x = x.lower()                                # 所有字母转为小写
    # x = ' '.join([word for word in x.split(' ') if word not in stop_words])  # 删除停用词
    x = x.encode('ascii', 'ignore').decode()     # 删除 unicode 字符（乱码,例如：pel韈ula）
    x = re.sub("@\S+", " ", x)                   # 删除提及(例如：@zhangsan)
    x = re.sub("https*\S+", " ", x)              # 删除URL链接
    x = re.sub("#\S+", " ", x)                   # 删除标签（例如：#Amazing）
    x = re.sub("\'\w+", '', x)                   # 删除记号和下一个字符（例如：he's）
    x = re.sub(r'[’!"⧚#$%&뵵ᴪↀꍢꝳ닗떛껄뵵\'()*+,-./:;<=>?@，。?★、…【】《》？“”‘’！\[\\\]^_`{|}~]+', ' ', x)   # 删除特殊字符
    x = re.sub(r'\w*\d+\w*', '', x)              # 删除数字
    x = re.sub('\s{1,}', " ", x)                 # 删除2个及以上的空格
    x = x.strip()                                # 删除两端无用空格
    x = str(TextBlob(x).correct())               # 拼写校对  ->  速度慢

    return x


# 使用自定义函数清洗DataFrame中的乱码
dataxls = dataxls.applymap(clean_text)
# 使用自定义函数处理DataFrame中每个文本数据的乱码


from openpyxl import Workbook

# 创建一个新的Excel工作薄
workbook = Workbook()
# 获取活动工作表
sheet = workbook.active

y = []
x=[]
import opencc

# 创建一个OpenCC实例，指定转换方式
converter = opencc.OpenCC('t2s.json')
for i in range(0, len(dataxls)):
    x= dataxls.iloc[i]['query'];
    y = dataxls.iloc[i]['fact'];
    # print(km)
    data_clean(x)
    data_clean(y)
    # 将繁体字转换为简体字
    converted_text = converter.convert(x)
    converted_text = converter.convert(y)
    # 使用正确的编码方式解码字符串
    # x = x.decode('utf-8')
    # x = x.decode("utf-8", errors="replace").encode("utf-8")
    dataxls.iloc[i]['query']=x
    dataxls.iloc[i]['fact']=y
    print(dataxls.iloc[i]['query'])
    print(dataxls.iloc[i]['fact'])
    # 在第一列写入序号
    sheet.cell(row=i+1, column=1, value=i)
    # 在第二列写入数据
    sheet.cell(row=i+1, column=2, value=x)
    # 在第三列写入数据
    sheet.cell(row=i + 1, column=3, value=y)

# 保存Excel文件
workbook.save(filename='dataclean.xlsx')





